package com.example.android.network.sync.basicsyncadapter; import android.content.ContentResolver; import android.content.Context; import android.content.OperationApplicationException; import android.content.SyncResult; import android.database.Cursor; import android.os.RemoteException; import android.test.ServiceTestCase; import com.example.android.network.sync.basicsyncadapter.provider.FeedContract; import org.xmlpull.v1.XmlPullParserException; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; public class SyncAdapterTest extends ServiceTestCase<SyncService> { public SyncAdapterTest() { super(SyncService.class); } public void testIncomingFeedParsed() throws IOException, XmlPullParserException, RemoteException, OperationApplicationException, ParseException { String sampleFeed = "<?xml version=\"1.0\"?>\n" + "<feed xmlns=\"http://www.w3.org/2005/Atom\">\n" + " \n" + " <title>Sample Blog</title>\n" + " <link href=\"http://example.com/\"/>\n" + " <link type=\"application/atom+xml\" rel=\"self\" href=\"http://example.xom/feed.xml\"/>\n" + " <updated>2013-05-16T16:53:23-07:00</updated>\n" + " <id>http://example.com/</id>\n" + " <author>\n" + " <name>Rick Deckard</name>\n" + " <email>deckard@example.com</email>\n" + " </author>\n" + "\n" + " <entry>\n" + " <id>http://example.com/2012/10/20/test-post</id>\n" + " <link type=\"text/html\" rel=\"alternate\" href=\"http://example.com/2012/10/20/test-post.html\"/>\n" + " <title>Test Post #1</title>\n" + " <published>2012-10-20T00:00:00-07:00</published>\n" + " <updated>2012-10-20T00:00:00-07:00</updated>\n" + " <author>\n" + " <name>Rick Deckard</name>\n" + " <uri>http://example.com/</uri>\n" + " </author>\n" + " <summary>This is a sample summary.</summary>\n" + " <content type=\"html\">Here's some <em>sample</em> content.</content>\n" + " </entry>\n" + "</feed>\n"; InputStream stream = new ByteArrayInputStream(sampleFeed.getBytes()); SyncAdapter adapter = new SyncAdapter(getContext(), false); adapter.updateLocalFeedData(stream, new SyncResult()); Context ctx = getContext(); assert ctx != null; ContentResolver cr = ctx.getContentResolver(); final String[] projection = {FeedContract.Entry.COLUMN_NAME_ENTRY_ID, FeedContract.Entry.COLUMN_NAME_TITLE, FeedContract.Entry.COLUMN_NAME_LINK}; Cursor c = cr.query(FeedContract.Entry.CONTENT_URI, projection, null, null, null); assert c != null; assertEquals(1, c.getCount()); c.moveToFirst(); assertEquals("http://example.com/2012/10/20/test-post", c.getString(0)); assertEquals("Test Post #1", c.getString(1)); assertEquals("http://example.com/2012/10/20/test-post.html", c.getString(2)); } }